/*
 * Decompiled with CFR 0.150.
 * 
 * Could not load the following classes:
 *  cn.hutool.core.bean.BeanUtil
 *  cn.hutool.core.collection.CollUtil
 *  cn.hutool.core.date.DateUtil
 *  cn.hutool.core.util.ObjectUtil
 *  cn.hutool.core.util.StrUtil
 *  com.alibaba.fastjson.JSON
 *  de.felixroske.jfxsupport.FXMLController
 *  javafx.beans.value.ChangeListener
 *  javafx.beans.value.ObservableValue
 *  javafx.collections.FXCollections
 *  javafx.collections.ObservableList
 *  javafx.event.ActionEvent
 *  javafx.event.EventHandler
 *  javafx.fxml.FXML
 *  javafx.fxml.Initializable
 *  javafx.scene.Node
 *  javafx.scene.control.Alert
 *  javafx.scene.control.Alert$AlertType
 *  javafx.scene.control.Button
 *  javafx.scene.control.CheckBox
 *  javafx.scene.control.ChoiceBox
 *  javafx.scene.control.ComboBox
 *  javafx.scene.control.DatePicker
 *  javafx.scene.control.ScrollPane
 *  javafx.scene.control.TableCell
 *  javafx.scene.control.TableColumn
 *  javafx.scene.control.TableView
 *  javafx.scene.control.TextField
 *  javafx.scene.control.cell.PropertyValueFactory
 *  javafx.scene.input.KeyCode
 *  javafx.scene.input.KeyEvent
 *  javafx.scene.layout.HBox
 *  javafx.scene.layout.VBox
 *  javafx.scene.text.Text
 *  javafx.stage.Modality
 *  javafx.util.Callback
 *  javafx.util.StringConverter
 *  org.springframework.beans.factory.annotation.Autowired
 *  org.springframework.util.CollectionUtils
 */
package com.gys.controller.medCheck;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.gys.GysApplication;
import com.gys.common.business.MedCheckUtil;
import com.gys.common.business.ProductBasicUtil;
import com.gys.common.business.ProductSortSettingUtil;
import com.gys.common.business.UserUtil;
import com.gys.common.data.HttpJson;
import com.gys.common.enums.ProForm;
import com.gys.common.util.CacheUtil;
import com.gys.common.util.CommonUtil;
import com.gys.controller.BaseController;
import com.gys.controller.index.IndexController;
import com.gys.controller.medCheck.MedCheckProductController;
import com.gys.data.example.GetLoginStoreOutData;
import com.gys.data.medCheck.GetMedCheckDInData;
import com.gys.data.medCheck.GetMedCheckDOutData;
import com.gys.data.medCheck.GetMedCheckInData;
import com.gys.data.medCheck.GetMedCheckOutData;
import com.gys.data.medCheck.GsmchResult;
import com.gys.data.medCheck.GsmchStatus;
import com.gys.data.medCheck.GsmchType;
import com.gys.data.medCheck.GsmchValid;
import com.gys.data.productBasic.GetProductInfoQueryInData;
import com.gys.data.productBasic.GetProductInfoQueryOutData;
import com.gys.data.productSortSetting.GetProductSortOutData;
import com.gys.data.user.UserInData;
import com.gys.data.user.UserOutData;
import com.gys.view.medCheck.MedCheckProductView;
import de.felixroske.jfxsupport.FXMLController;
import java.net.URL;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.ResourceBundle;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.Node;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.CheckBox;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.ComboBox;
import javafx.scene.control.DatePicker;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.TableCell;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text;
import javafx.stage.Modality;
import javafx.util.Callback;
import javafx.util.StringConverter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;

@FXMLController
public class MedCheckController
extends BaseController
implements Initializable {
    @FXML
    private ScrollPane scrollPane;
    @FXML
    private VBox vBox;
    @FXML
    private HBox detailHbox;
    @FXML
    private HBox addHbox;
    @FXML
    private TextField searchProId;
    @FXML
    private ChoiceBox<UserOutData> searchEmp;
    @FXML
    private ChoiceBox<GetProductSortOutData> proGroupSelect;
    @FXML
    private ChoiceBox<GsmchValid> validSelect;
    @FXML
    private DatePicker searchDate;
    @FXML
    private TextField searchBatchNo;
    @FXML
    private ChoiceBox<GsmchStatus> searchStatus;
    @FXML
    private ChoiceBox<GsmchType> searchType;
    @FXML
    private Button saveButton;
    @FXML
    private TableView<GetMedCheckOutData> tableView;
    @FXML
    private TableColumn<GetMedCheckOutData, Integer> index;
    @FXML
    private TableColumn<GetMedCheckOutData, CheckBox> checkBox;
    @FXML
    private TableColumn<GetMedCheckOutData, String> gsmchVoucherId;
    @FXML
    private TableColumn<GetMedCheckOutData, String> gsmchBrName;
    @FXML
    private TableColumn<GetMedCheckOutData, String> gsmchDate;
    @FXML
    private TableColumn<GetMedCheckOutData, String> gsmchType;
    @FXML
    private TableColumn<GetMedCheckOutData, String> gsmchEmp;
    @FXML
    private TableColumn<GetMedCheckOutData, String> gsmchExamineEmp;
    @FXML
    private TableColumn<GetMedCheckOutData, String> gsmchStatus;
    @FXML
    private TableView<GetMedCheckDOutData> detailTableView;
    @FXML
    private TableColumn<GetMedCheckDOutData, CheckBox> detailCheckBox;
    @FXML
    private TableColumn<GetMedCheckDOutData, Integer> detailIndex;
    @FXML
    private TableColumn<GetMedCheckDOutData, String> gsmcdProId;
    @FXML
    private TableColumn<GetMedCheckDOutData, String> proName;
    @FXML
    private TableColumn<GetMedCheckDOutData, String> proSpecs;
    @FXML
    private TableColumn<GetMedCheckDOutData, String> proUnit;
    @FXML
    private TableColumn<GetMedCheckDOutData, String> gsmcdBatchNo;
    @FXML
    private TableColumn<GetMedCheckDOutData, String> vaild;
    @FXML
    private TableColumn<GetMedCheckDOutData, String> stockQty;
    @FXML
    private TableColumn<GetMedCheckDOutData, String> gsmcdQty;
    @FXML
    private TableColumn<GetMedCheckDOutData, String> gsmcdResult;
    @FXML
    private TableColumn<GetMedCheckDOutData, String> proFactoryName;
    @FXML
    private TableColumn<GetMedCheckDOutData, String> proPlace;
    @FXML
    private TableColumn<GetMedCheckDOutData, String> proForm;
    private ObservableList<GetMedCheckOutData> observableTableList = FXCollections.observableArrayList(new ArrayList());
    private ObservableList<GetMedCheckDOutData> observableDetailTableList = FXCollections.observableArrayList(new ArrayList());
    @Autowired
    private IndexController indexController;
    @Autowired
    private MedCheckProductController medCheckProductController;

    public void initialize(URL location, ResourceBundle resources) {
        this.scrollPane.setPrefWidth(this.getContentWidth());
        this.scrollPane.setPrefHeight(this.getContentHeight());
        this.vBox.setPrefWidth(this.getContentWidth());
        this.vBox.setPrefHeight(this.getContentHeight());
        this.tableView.setPrefWidth(this.getContentWidth());
        this.detailTableView.setPrefWidth(this.getContentWidth());
        StringConverter converter = CommonUtil.dataPickerFormat("yyyyMMdd");
        this.searchDate.setConverter(converter);
        UserInData inData = new UserInData();
        HttpJson rsp = UserUtil.selectPharmacistByBrId(inData);
        if (rsp.isSuccess()) {
            List empList = JSON.parseArray((String)rsp.getMsg(), UserOutData.class);
            this.searchEmp.getItems().addAll((Collection)empList);
            this.searchEmp.converterProperty().set(new StringConverter<UserOutData>(){

                public String toString(UserOutData object) {
                    return object.getUserNam();
                }

                public UserOutData fromString(String string) {
                    return null;
                }
            });
        } else {
            Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", rsp.getMsg());
            alert.showAndWait();
        }
        this.searchStatus.getItems().addAll(this.getAllStatus());
        this.searchStatus.converterProperty().set(new StringConverter<GsmchStatus>(){

            public String toString(GsmchStatus object) {
                return object.getName();
            }

            public GsmchStatus fromString(String string) {
                return null;
            }
        });
        this.searchType.getItems().addAll(this.getAllType());
        this.searchType.converterProperty().set(new StringConverter<GsmchType>(){

            public String toString(GsmchType object) {
                return object.getName();
            }

            public GsmchType fromString(String string) {
                return null;
            }
        });
        this.indexController.scrollContentPane.setOnKeyReleased((EventHandler)new EventHandler<KeyEvent>(){

            public void handle(KeyEvent event) {
                if (event.getCode() == KeyCode.F1) {
                    MedCheckController.this.showAdd();
                    return;
                }
                if (event.getCode() == KeyCode.F8) {
                    MedCheckController.this.approve();
                    return;
                }
                if (event.getCode() == KeyCode.F9 && !MedCheckController.this.saveButton.isDisabled()) {
                    MedCheckController.this.save();
                    return;
                }
                if (event.getCode() == KeyCode.ENTER) {
                    MedCheckController.this.selectList();
                }
            }
        });
    }

    @FXML
    private void selectList() {
        String proId = this.searchProId.getText().trim();
        String emp = "";
        if (ObjectUtil.isNotNull(this.searchEmp.getValue())) {
            emp = ((UserOutData)this.searchEmp.getValue()).getUserId();
        }
        String date = "";
        LocalDate updateDate = (LocalDate)this.searchDate.getValue();
        if (ObjectUtil.isNotNull(updateDate)) {
            date = DateUtil.format((Date)DateUtil.parse((String)((LocalDate)this.searchDate.getValue()).toString()), (String)"yyyyMMdd");
        }
        String batchNo = this.searchBatchNo.getText().trim();
        String status = "";
        if (ObjectUtil.isNotNull(this.searchStatus.getValue())) {
            status = ((GsmchStatus)this.searchStatus.getValue()).getCode();
        }
        String type = "";
        if (ObjectUtil.isNotNull(this.searchType.getValue())) {
            type = ((GsmchType)this.searchType.getValue()).getCode();
        }
        Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", null);
        if (StrUtil.isBlank((CharSequence)proId) && StrUtil.isBlank((CharSequence)emp) && StrUtil.isBlank((CharSequence)date) && StrUtil.isBlank((CharSequence)batchNo) && StrUtil.isBlank((CharSequence)status) && StrUtil.isBlank((CharSequence)type)) {
            alert.setContentText("\u5fc5\u987b\u81f3\u5c11\u586b\u5199\u4e00\u9879\u5185\u5bb9\u8fdb\u884c\u67e5\u8be2\uff01");
            alert.showAndWait();
            return;
        }
        GetMedCheckInData inData = new GetMedCheckInData();
        inData.setGsmcdProId(proId);
        inData.setGsmchEmp(emp);
        inData.setGsmchDate(date);
        inData.setGsmcdBatchNo(batchNo);
        inData.setGsmchStatus(status);
        inData.setGsmchType(type);
        HttpJson rsp = MedCheckUtil.selectMedCheckList(inData);
        if (rsp.isSuccess()) {
            List<GetMedCheckOutData> dataList = JSON.parseArray((String)rsp.getMsg(), GetMedCheckOutData.class);
            int index = 1;
            for (GetMedCheckOutData medCheckOutData : dataList) {
                if ("1".equals(medCheckOutData.getGsmchType())) {
                    medCheckOutData.setGsmchType("\u4e00\u822c\u517b\u62a4");
                } else {
                    medCheckOutData.setGsmchType("\u91cd\u70b9\u517b\u62a4");
                }
                if ("1".equals(medCheckOutData.getGsmchStatus())) {
                    medCheckOutData.setGsmchStatus("\u5df2\u5ba1\u6838");
                } else {
                    medCheckOutData.setGsmchStatus("\u672a\u5ba1\u6838");
                }
                medCheckOutData.setIndex(index);
                ++index;
            }
            this.observableTableList.clear();
            this.observableTableList = FXCollections.observableArrayList((Collection)dataList);
            this.bingTableCell();
            this.clearTableViewEdit(this.gsmchType);
            this.clearTableViewEdit(this.gsmchEmp);
            this.tableView.setItems(this.observableTableList);
            this.detailHbox.setVisible(false);
            this.detailTableView.setVisible(false);
            this.saveButton.setDisable(true);
        } else {
            alert.setContentText(rsp.getMsg());
            alert.showAndWait();
        }
    }

    private void bingTableCell() {
        this.index.setCellValueFactory((Callback)new PropertyValueFactory(this.index.getId()));
        this.checkBox.setCellValueFactory(cellData -> ((GetMedCheckOutData)cellData.getValue()).getCheckBox().getCustomCheckBox());
        this.checkBox.setCellFactory(col -> {
            TableCell<GetMedCheckOutData, CheckBox> cell = new TableCell<GetMedCheckOutData, CheckBox>(){

                protected void updateItem(CheckBox item, boolean empty) {
                    super.updateItem(item, empty);
                    this.setGraphic((Node)item);
                    if (item != null) {
                        item.setOnMouseClicked(col -> {
                            if (CollUtil.isEmpty((Collection)MedCheckController.this.observableTableList)) {
                                return;
                            }
                            int index = this.getIndex();
                            for (int i = 0; i < MedCheckController.this.observableTableList.size(); ++i) {
                                if (i == index) continue;
                                ((GetMedCheckOutData)MedCheckController.this.observableTableList.get(i)).getCheckBox().setSelectStatus(false);
                            }
                            MedCheckController.this.showDetail(index);
                        });
                    }
                }
            };
            return cell;
        });
        this.gsmchVoucherId.setCellValueFactory((Callback)new PropertyValueFactory(this.gsmchVoucherId.getId()));
        this.gsmchBrName.setCellValueFactory((Callback)new PropertyValueFactory(this.gsmchBrName.getId()));
        this.gsmchDate.setCellValueFactory((Callback)new PropertyValueFactory(this.gsmchDate.getId()));
        this.gsmchType.setCellValueFactory((Callback)new PropertyValueFactory(this.gsmchType.getId()));
        this.gsmchEmp.setCellValueFactory((Callback)new PropertyValueFactory(this.gsmchEmp.getId()));
        this.gsmchExamineEmp.setCellValueFactory((Callback)new PropertyValueFactory(this.gsmchExamineEmp.getId()));
        this.gsmchStatus.setCellValueFactory((Callback)new PropertyValueFactory(this.gsmchStatus.getId()));
        this.tableView.getSelectionModel().selectedItemProperty().addListener((ChangeListener)new ChangeListener<GetMedCheckOutData>(){

            public void changed(ObservableValue<? extends GetMedCheckOutData> observable, GetMedCheckOutData oldValue, GetMedCheckOutData newValue) {
                if (CollUtil.isEmpty((Collection)MedCheckController.this.observableTableList)) {
                    return;
                }
                for (int i = 0; i < MedCheckController.this.observableTableList.size(); ++i) {
                    if (i == newValue.getIndex() - 1) {
                        ((GetMedCheckOutData)MedCheckController.this.observableTableList.get(i)).getCheckBox().setSelectStatus(true);
                        continue;
                    }
                    ((GetMedCheckOutData)MedCheckController.this.observableTableList.get(i)).getCheckBox().setSelectStatus(false);
                }
                MedCheckController.this.showDetail(newValue.getIndex() - 1);
            }
        });
    }

    private void showDetail(int index) {
        if (((GetMedCheckOutData)this.observableTableList.get(index)).getCheckBox().isSelected().booleanValue()) {
            this.initDetailTable(((GetMedCheckOutData)this.observableTableList.get(index)).getGsmchVoucherId());
        } else {
            if (!this.saveButton.isDisabled()) {
                return;
            }
            this.detailHbox.setVisible(false);
            this.detailTableView.setVisible(false);
        }
    }

    private void initDetailTable(String gsmchVoucherId) {
        if (!this.saveButton.isDisabled()) {
            return;
        }
        this.detailHbox.setVisible(true);
        this.detailTableView.setVisible(true);
        this.addHbox.setVisible(false);
        Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", null);
        GetMedCheckInData inData = new GetMedCheckInData();
        inData.setGsmchVoucherId(gsmchVoucherId);
        HttpJson rsp = MedCheckUtil.selectMedCheckOne(inData);
        if (rsp.isSuccess()) {
            GetMedCheckOutData outData = (GetMedCheckOutData)JSON.parseObject((String)rsp.getMsg(), GetMedCheckOutData.class);
            List<GetMedCheckDOutData> dataList = outData.getMedCheckDs();
            int index = 1;
            for (GetMedCheckDOutData medCheckOutData : dataList) {
                if ("1".equals(medCheckOutData.getGsmcdResult())) {
                    medCheckOutData.setGsmcdResult("\u5408\u683c");
                } else if ("2".equals(medCheckOutData.getGsmcdResult())) {
                    medCheckOutData.setGsmcdResult("\u4e0d\u5408\u683c");
                } else if ("3".equals(medCheckOutData.getGsmcdResult())) {
                    medCheckOutData.setGsmcdResult("\u5f02\u5e38");
                } else {
                    medCheckOutData.setGsmcdResult("\u9501\u5b9a");
                }
                medCheckOutData.setProForm(ProForm.getName(medCheckOutData.getProForm()));
                medCheckOutData.setDetailIndex(index);
                ++index;
            }
            this.observableDetailTableList.clear();
            this.observableDetailTableList = FXCollections.observableArrayList(dataList);
            this.bingDetailTableCell();
            this.clearDetailTableViewEdit(this.gsmcdQty);
            this.clearDetailTableViewEdit(this.gsmcdResult);
            this.detailTableView.setItems(this.observableDetailTableList);
        } else {
            alert.setContentText(rsp.getMsg());
            alert.showAndWait();
        }
    }

    private void bingDetailTableCell() {
        this.detailCheckBox.setCellValueFactory(cellData -> ((GetMedCheckDOutData)cellData.getValue()).getDetailCheckBox().getCustomCheckBox());
        this.detailCheckBox.setCellFactory(col -> {
            TableCell<GetMedCheckDOutData, CheckBox> cell = new TableCell<GetMedCheckDOutData, CheckBox>(){

                protected void updateItem(CheckBox item, boolean empty) {
                    super.updateItem(item, empty);
                    this.setGraphic((Node)item);
                    if (item != null) {
                        item.setOnMouseClicked(col -> {
                            if (CollUtil.isEmpty((Collection)MedCheckController.this.observableDetailTableList)) {
                                return;
                            }
                            int index = this.getIndex();
                            for (int i = 0; i < MedCheckController.this.observableDetailTableList.size(); ++i) {
                                if (i == index) continue;
                                ((GetMedCheckDOutData)MedCheckController.this.observableDetailTableList.get(i)).getDetailCheckBox().setSelectStatus(false);
                            }
                        });
                    }
                }
            };
            return cell;
        });
        this.detailIndex.setCellValueFactory((Callback)new PropertyValueFactory(this.detailIndex.getId()));
        this.gsmcdProId.setCellValueFactory((Callback)new PropertyValueFactory(this.gsmcdProId.getId()));
        this.proName.setCellValueFactory((Callback)new PropertyValueFactory(this.proName.getId()));
        this.proSpecs.setCellValueFactory((Callback)new PropertyValueFactory(this.proSpecs.getId()));
        this.proUnit.setCellValueFactory((Callback)new PropertyValueFactory(this.proUnit.getId()));
        this.gsmcdBatchNo.setCellValueFactory((Callback)new PropertyValueFactory(this.gsmcdBatchNo.getId()));
        this.vaild.setCellValueFactory((Callback)new PropertyValueFactory(this.vaild.getId()));
        this.stockQty.setCellValueFactory((Callback)new PropertyValueFactory(this.stockQty.getId()));
        this.gsmcdQty.setCellValueFactory((Callback)new PropertyValueFactory(this.gsmcdQty.getId()));
        this.gsmcdResult.setCellValueFactory((Callback)new PropertyValueFactory(this.gsmcdResult.getId()));
        this.proFactoryName.setCellValueFactory((Callback)new PropertyValueFactory(this.proFactoryName.getId()));
        this.proPlace.setCellValueFactory((Callback)new PropertyValueFactory(this.proPlace.getId()));
        this.proForm.setCellValueFactory((Callback)new PropertyValueFactory(this.proForm.getId()));
        this.detailTableView.getSelectionModel().selectedItemProperty().addListener((ChangeListener)new ChangeListener<GetMedCheckDOutData>(){

            public void changed(ObservableValue<? extends GetMedCheckDOutData> observable, GetMedCheckDOutData oldValue, GetMedCheckDOutData newValue) {
                if (CollUtil.isEmpty((Collection)MedCheckController.this.observableDetailTableList)) {
                    return;
                }
                for (int i = 0; i < MedCheckController.this.observableDetailTableList.size(); ++i) {
                    if (i == newValue.getDetailIndex() - 1) {
                        ((GetMedCheckDOutData)MedCheckController.this.observableDetailTableList.get(i)).getDetailCheckBox().setSelectStatus(true);
                        continue;
                    }
                    ((GetMedCheckDOutData)MedCheckController.this.observableDetailTableList.get(i)).getDetailCheckBox().setSelectStatus(false);
                }
            }
        });
    }

    @FXML
    private void showAdd() {
        Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", null);
        HashMap<String, Object> param = new HashMap<String, Object>();
        HttpJson rsp = ProductSortSettingUtil.selectProGroupByClient(param);
        if (rsp.isSuccess()) {
            List proGroup = JSON.parseArray((String)rsp.getMsg(), GetProductSortOutData.class);
            this.proGroupSelect.setItems(FXCollections.observableArrayList((Collection)proGroup));
            this.proGroupSelect.converterProperty().set(new StringConverter<GetProductSortOutData>(){

                public String toString(GetProductSortOutData object) {
                    return object.getGspgNameSort();
                }

                public GetProductSortOutData fromString(String string) {
                    return null;
                }
            });
        } else {
            alert.setContentText(rsp.getMsg());
            alert.showAndWait();
        }
        this.validSelect.setItems(FXCollections.observableArrayList(this.getAllValid()));
        this.validSelect.converterProperty().set(new StringConverter<GsmchValid>(){

            public String toString(GsmchValid object) {
                return object.getName();
            }

            public GsmchValid fromString(String string) {
                return null;
            }
        });
        this.detailHbox.setVisible(true);
        this.addHbox.setVisible(true);
        this.detailTableView.setVisible(true);
        this.saveButton.setDisable(false);
        this.observableTableList.clear();
        ArrayList<GetMedCheckOutData> dataList = new ArrayList<GetMedCheckOutData>();
        GetMedCheckOutData outData = new GetMedCheckOutData();
        outData.setIndex(1);
        outData.setGsmchBrName(((GetLoginStoreOutData)CacheUtil.get("store")).getStoName());
        outData.setGsmchDate(DateUtil.format((Date)new Date(), (String)"yyyyMMdd"));
        outData.setGsmchStatus("\u672a\u5ba1\u6838");
        dataList.add(outData);
        this.observableTableList = FXCollections.observableArrayList(dataList);
        this.index.setCellValueFactory((Callback)new PropertyValueFactory(this.index.getId()));
        this.gsmchVoucherId.setCellValueFactory((Callback)new PropertyValueFactory(this.gsmchVoucherId.getId()));
        this.gsmchBrName.setCellValueFactory((Callback)new PropertyValueFactory(this.gsmchBrName.getId()));
        this.gsmchDate.setCellValueFactory((Callback)new PropertyValueFactory(this.gsmchDate.getId()));
        this.gsmchType.setCellValueFactory((Callback)new PropertyValueFactory(this.gsmchType.getId()));
        this.gsmchEmp.setCellValueFactory((Callback)new PropertyValueFactory(this.gsmchEmp.getId()));
        this.gsmchExamineEmp.setCellValueFactory((Callback)new PropertyValueFactory(this.gsmchExamineEmp.getId()));
        this.gsmchStatus.setCellValueFactory((Callback)new PropertyValueFactory(this.gsmchStatus.getId()));
        this.tableViewTypeChoice(this.gsmchType);
        this.tableViewEmpChoice(this.gsmchEmp);
        this.tableView.setItems(this.observableTableList);
        this.observableDetailTableList.clear();
        this.detailTableView.refresh();
    }

    @FXML
    private void selectProByGroup() {
        Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", null);
        if (ObjectUtil.isNull(this.proGroupSelect.getValue())) {
            alert.setContentText("\u8bf7\u9009\u62e9\u5546\u54c1\u5206\u7c7b");
            alert.showAndWait();
            return;
        }
        GetProductInfoQueryInData inData = new GetProductInfoQueryInData();
        inData.setGspgId(((GetProductSortOutData)this.proGroupSelect.getValue()).getGspgIdSort());
        this.addDetailTable(inData);
    }

    @FXML
    private void selectProByValid() {
        Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", null);
        if (ObjectUtil.isNull(this.validSelect.getValue())) {
            alert.setContentText("\u8bf7\u9009\u62e9\u6548\u671f");
            alert.showAndWait();
            return;
        }
        GetProductInfoQueryInData inData = new GetProductInfoQueryInData();
        inData.setMonth(((GsmchValid)this.validSelect.getValue()).getCode());
        this.addDetailTable(inData);
    }

    private void addDetailTable(GetProductInfoQueryInData inData) {
        Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", null);
        HttpJson rsp = ProductBasicUtil.selectMedCheckProList(inData);
        if (rsp.isSuccess()) {
            String key;
            List<GetProductInfoQueryOutData> proList = JSON.parseArray((String)rsp.getMsg(), GetProductInfoQueryOutData.class);
            int index = this.observableDetailTableList.size() + 1;
            HashMap<String, String> proMap = new HashMap<String, String>();
            for (GetMedCheckDOutData outData : this.observableDetailTableList) {
                key = outData.getGsmcdProId() + "-" + outData.getGsmcdBatchNo();
                proMap.put(key, outData.getGsmcdProId());
            }
            for (GetProductInfoQueryOutData pro : proList) {
                key = pro.getProCode() + "-" + pro.getBatchNo();
                if (StrUtil.isNotBlank((CharSequence)((CharSequence)proMap.get(key)))) continue;
                GetMedCheckDOutData outData = new GetMedCheckDOutData();
                outData.setDetailIndex(index);
                outData.setGsmcdProId(pro.getProCode());
                outData.setProName(pro.getProName());
                outData.setProSpecs(pro.getProSpecs());
                outData.setProUnit(pro.getProUnit());
                outData.setGsmcdBatchNo(pro.getBatchNo());
                outData.setVaild(pro.getVaild());
                outData.setStockQty(pro.getStockQty());
                outData.setGsmcdQty(pro.getStockQty());
                outData.setGsmcdResult("1");
                outData.setProFactoryName(pro.getProFactoryName());
                outData.setProPlace(pro.getProPlace());
                if (StrUtil.isNotBlank((CharSequence)pro.getProForm())) {
                    outData.setProForm(ProForm.getName(pro.getProForm()));
                }
                this.observableDetailTableList.add(outData);
                ++index;
            }
            this.bingDetailTableCell();
            this.tableViewResultChoice(this.gsmcdResult);
            this.tableViewQtyText(this.gsmcdQty);
            this.detailTableView.setItems(this.observableDetailTableList);
        } else {
            alert.setContentText(rsp.getMsg());
            alert.showAndWait();
        }
    }

    @FXML
    private void save() {
        Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", null);
        GetMedCheckOutData outData = (GetMedCheckOutData)this.observableTableList.get(0);
        if (StrUtil.isBlank((CharSequence)outData.getGsmchType())) {
            alert.setContentText("\u8bf7\u9009\u62e9\u517b\u62a4\u7c7b\u578b");
            alert.showAndWait();
            return;
        }
        if (StrUtil.isBlank((CharSequence)outData.getGsmchEmp())) {
            alert.setContentText("\u8bf7\u9009\u62e9\u517b\u62a4\u4eba\u5458");
            alert.showAndWait();
            return;
        }
        GetMedCheckInData inData = new GetMedCheckInData();
        inData.setGsmchType(outData.getGsmchType());
        inData.setGsmchEmp(outData.getGsmchEmp());
        inData.setGsmchDate(outData.getGsmchDate());
        ArrayList<GetMedCheckDInData> medCheckDs = new ArrayList<GetMedCheckDInData>();
        ObservableList<GetMedCheckDOutData> detailList = this.observableDetailTableList;
        if (CollUtil.isEmpty(detailList)) {
            alert.setContentText("\u8bf7\u9009\u62e9\u5546\u54c1");
            alert.showAndWait();
            return;
        }
        HashMap<String, Integer> detailMap = new HashMap<String, Integer>();
        for (GetMedCheckDOutData detail : detailList) {
            if (StrUtil.isBlank((CharSequence)detail.getGsmcdQty())) {
                alert.setContentText(StrUtil.format((CharSequence)"\u7b2c{}\u884c\u5546\u54c1\u8bf7\u586b\u5199\u517b\u62a4\u6570\u91cf", (Object[])new Object[]{detail.getDetailIndex()}));
                alert.showAndWait();
                return;
            }
            if (StrUtil.isBlank((CharSequence)detail.getGsmcdResult())) {
                alert.setContentText(StrUtil.format((CharSequence)"\u7b2c{}\u884c\u5546\u54c1\u8bf7\u9009\u62e9\u517b\u62a4\u7ed3\u8bba", (Object[])new Object[]{detail.getDetailIndex()}));
                alert.showAndWait();
                return;
            }
            String key = detail.getGsmcdProId() + "-" + detail.getGsmcdBatchNo();
            if (ObjectUtil.isNotNull(detailMap.get(key))) {
                alert.setContentText(StrUtil.format((CharSequence)"\u7b2c{}\u884c\u548c\u7b2c{}\u884c\u5546\u54c1\u6279\u53f7\u91cd\u590d", (Object[])new Object[]{detailMap.get(key), detail.getDetailIndex()}));
                alert.showAndWait();
                return;
            }
            detailMap.put(key, detail.getDetailIndex());
            GetMedCheckDInData dInData = new GetMedCheckDInData();
            dInData.setGsmcdProId(detail.getGsmcdProId());
            dInData.setGsmcdBatchNo(detail.getGsmcdBatchNo());
            dInData.setGsmcdQty(detail.getGsmcdQty());
            dInData.setGsmcdResult(detail.getGsmcdResult());
            medCheckDs.add(dInData);
        }
        inData.setMedCheckDs(medCheckDs);
        HttpJson rsp = MedCheckUtil.saveMedCheck(inData);
        if (rsp.isSuccess()) {
            alert.setContentText("\u4fdd\u5b58\u6210\u529f");
            alert.showAndWait();
            this.showAdd();
        } else {
            alert.setContentText(rsp.getMsg());
            alert.showAndWait();
        }
    }

    private void tableViewTypeChoice(TableColumn<GetMedCheckOutData, String> tableColumn) {
        tableColumn.setCellFactory(tc -> {
            final ComboBox combo = new ComboBox();
            combo.getItems().addAll(this.getAllType());
            combo.setEditable(false);
            combo.setPrefHeight(30.0);
            combo.converterProperty().set(new StringConverter<GsmchType>(){

                public String toString(GsmchType object) {
                    return object.getName();
                }

                public GsmchType fromString(String string) {
                    return null;
                }
            });
            TableCell<GetMedCheckOutData, String> cell = new TableCell<GetMedCheckOutData, String>(){

                protected void updateItem(String chuzhi, boolean empty) {
                    super.updateItem(chuzhi, empty);
                    if (empty) {
                        this.setGraphic(null);
                    } else {
                        this.setGraphic((Node)combo);
                    }
                }
            };
            combo.setOnAction(arg_0 -> {
                int rank = cell.getIndex();
                String value = ((GsmchType)combo.getValue()).getCode();
                GetMedCheckOutData outData = (GetMedCheckOutData)this.observableTableList.get(rank);
                outData.setGsmchType(value);
            });
            return cell;
        });
    }

    private void tableViewEmpChoice(TableColumn<GetMedCheckOutData, String> tableColumn) {
        UserInData inData = new UserInData();
        HttpJson rsp = UserUtil.selectPharmacistByBrId(inData);
        if (rsp.isSuccess()) {
            List empList = JSON.parseArray((String)rsp.getMsg(), UserOutData.class);
            tableColumn.setCellFactory(tc -> {
                final ComboBox combo = new ComboBox();
                combo.getItems().addAll((Collection)empList);
                combo.setEditable(false);
                combo.setPrefHeight(30.0);
                combo.converterProperty().set(new StringConverter<UserOutData>(){

                    public String toString(UserOutData object) {
                        return object.getUserNam();
                    }

                    public UserOutData fromString(String string) {
                        return null;
                    }
                });
                TableCell<GetMedCheckOutData, String> cell = new TableCell<GetMedCheckOutData, String>(){

                    protected void updateItem(String chuzhi, boolean empty) {
                        super.updateItem(chuzhi, empty);
                        if (empty) {
                            this.setGraphic(null);
                        } else {
                            this.setGraphic((Node)combo);
                        }
                    }
                };
                combo.setOnAction(arg_0 -> {
                    int rank = cell.getIndex();
                    String value = ((UserOutData)combo.getValue()).getUserId();
                    GetMedCheckOutData outData = (GetMedCheckOutData)this.observableTableList.get(rank);
                    outData.setGsmchEmp(value);
                });
                return cell;
            });
        } else {
            Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", rsp.getMsg());
            alert.showAndWait();
        }
    }

    private void tableViewQtyText(TableColumn<GetMedCheckDOutData, String> tableColumn) {
        tableColumn.setCellFactory(tc -> {
            final TextField field = new TextField();
            TableCell<GetMedCheckDOutData, String> cell = new TableCell<GetMedCheckDOutData, String>(){

                protected void updateItem(String chuzhi, boolean empty) {
                    super.updateItem(chuzhi, empty);
                    if (empty) {
                        this.setGraphic(null);
                    } else {
                        field.setText(chuzhi);
                        this.setGraphic((Node)field);
                    }
                }
            };
            field.textProperty().addListener((ChangeListener)new ChangeListener<String>(){
                final TableCell val_cell;
                final TextField val_field;
                {
                    this.val_cell = cell;
                    this.val_field = field;
                }

                public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
                    int rank = this.val_cell.getIndex();
                    GetMedCheckDOutData outData = (GetMedCheckDOutData)MedCheckController.this.observableDetailTableList.get(rank);
                    outData.setGsmcdQty(this.val_field.getText().trim());
                }
            });
            return cell;
        });
    }

    private void tableViewResultChoice(TableColumn<GetMedCheckDOutData, String> tableColumn) {
        tableColumn.setCellFactory(tc -> {
            final ComboBox combo = new ComboBox();
            combo.getItems().addAll(this.getAllResult());
            combo.setEditable(false);
            combo.setPrefHeight(30.0);
            combo.converterProperty().set(new StringConverter<GsmchResult>(){

                public String toString(GsmchResult object) {
                    return object.getName();
                }

                public GsmchResult fromString(String string) {
                    return null;
                }
            });
            TableCell<GetMedCheckDOutData, String> cell = new TableCell<GetMedCheckDOutData, String>(){

                protected void updateItem(String chuzhi, boolean empty) {
                    super.updateItem(chuzhi, empty);
                    if (empty) {
                        this.setGraphic(null);
                    } else {
                        this.setGraphic((Node)combo);
                    }
                }
            };
            combo.setValue(new GsmchResult("1", "\u5408\u683c"));
            combo.setOnAction(arg_0 -> {
                int rank = cell.getIndex();
                String value = ((GsmchResult)combo.getValue()).getCode();
                GetMedCheckDOutData outData = (GetMedCheckDOutData)this.observableDetailTableList.get(rank);
                outData.setGsmcdResult(value);
            });
            return cell;
        });
    }

    public void clearTableViewEdit(TableColumn<GetMedCheckOutData, String> tableColumn) {
        tableColumn.setCellFactory(tc -> {
            TableCell<GetMedCheckOutData, String> cell = new TableCell<GetMedCheckOutData, String>(){

                protected void updateItem(String chuzhi, boolean empty) {
                    super.updateItem(chuzhi, empty);
                    if (empty) {
                        this.setGraphic(null);
                    } else {
                        Text text = new Text();
                        text.setText(chuzhi);
                        this.setGraphic((Node)text);
                    }
                }
            };
            return cell;
        });
    }

    public void clearDetailTableViewEdit(TableColumn<GetMedCheckDOutData, String> tableColumn) {
        tableColumn.setCellFactory(tc -> {
            TableCell<GetMedCheckDOutData, String> cell = new TableCell<GetMedCheckDOutData, String>(){

                protected void updateItem(String chuzhi, boolean empty) {
                    super.updateItem(chuzhi, empty);
                    if (empty) {
                        this.setGraphic(null);
                    } else {
                        Text text = new Text();
                        text.setText(chuzhi);
                        this.setGraphic((Node)text);
                    }
                }
            };
            return cell;
        });
    }

    @FXML
    private void approve() {
        Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", null);
        List<Integer> indexList = this.getSelectIndex();
        if (ObjectUtil.isEmpty(indexList)) {
            alert.setContentText("\u8bf7\u9009\u62e9\u8bb0\u5f55");
            alert.showAndWait();
            return;
        }
        String gsmchVoucherId = ((GetMedCheckOutData)this.observableTableList.get(indexList.get(0) - 1)).getGsmchVoucherId();
        GetMedCheckInData inData = new GetMedCheckInData();
        inData.setGsmchVoucherId(gsmchVoucherId);
        HttpJson rsp = MedCheckUtil.approveMedCheck(inData);
        if (rsp.isSuccess()) {
            ((GetMedCheckOutData)this.observableTableList.get(indexList.get(0) - 1)).setGsmchStatus("\u5df2\u5ba1\u6838");
            this.tableView.refresh();
            alert.setContentText("\u5ba1\u6838\u6210\u529f!");
            alert.showAndWait();
        } else {
            alert.setContentText(rsp.getMsg());
            alert.showAndWait();
        }
    }

    private List<GsmchStatus> getAllStatus() {
        ArrayList<GsmchStatus> list = new ArrayList<GsmchStatus>();
        list.add(new GsmchStatus("1", "\u5df2\u5ba1\u6838"));
        list.add(new GsmchStatus("0", "\u672a\u5ba1\u6838"));
        return list;
    }

    private List<GsmchType> getAllType() {
        ArrayList<GsmchType> list = new ArrayList<GsmchType>();
        list.add(new GsmchType("1", "\u4e00\u822c\u517b\u62a4"));
        list.add(new GsmchType("2", "\u91cd\u70b9\u517b\u62a4"));
        return list;
    }

    private List<GsmchValid> getAllValid() {
        ArrayList<GsmchValid> list = new ArrayList<GsmchValid>();
        list.add(new GsmchValid(1, "1\u4e2a\u6708"));
        list.add(new GsmchValid(2, "2\u4e2a\u6708"));
        list.add(new GsmchValid(3, "3\u4e2a\u6708"));
        list.add(new GsmchValid(6, "6\u4e2a\u6708"));
        return list;
    }

    private List<GsmchResult> getAllResult() {
        ArrayList<GsmchResult> list = new ArrayList<GsmchResult>();
        list.add(new GsmchResult("1", "\u5408\u683c"));
        list.add(new GsmchResult("2", "\u4e0d\u5408\u683c"));
        list.add(new GsmchResult("3", "\u5f02\u5e38"));
        list.add(new GsmchResult("4", "\u9501\u5b9a"));
        return list;
    }

    private List<Integer> getSelectIndex() {
        ArrayList<Integer> ids = new ArrayList<Integer>();
        if (!CollectionUtils.isEmpty(this.observableTableList)) {
            for (GetMedCheckOutData i : this.observableTableList) {
                if (!i.getCheckBox().isSelected().booleanValue()) continue;
                ids.add(i.getIndex());
            }
        }
        return ids;
    }

    @FXML
    private void showAddProduct() {
        this.medCheckProductController.init();
        GysApplication.showView(MedCheckProductView.class, (Modality)Modality.APPLICATION_MODAL);
    }

    public void addProduct(GetMedCheckDOutData outData) {
        this.observableDetailTableList.add(outData);
        this.bingDetailTableCell();
        this.tableViewResultChoice(this.gsmcdResult);
        this.tableViewQtyText(this.gsmcdQty);
        this.detailTableView.setItems(this.observableDetailTableList);
    }

    @FXML
    private void deleteProduct() {
        Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", null);
        List<Integer> indexList = this.getDetailSelectIndex();
        if (ObjectUtil.isEmpty(indexList)) {
            alert.setContentText("\u8bf7\u9009\u62e9\u5546\u54c1");
            alert.showAndWait();
            return;
        }
        ArrayList<GetMedCheckDOutData> dataList = new ArrayList<GetMedCheckDOutData>();
        int index = 1;
        for (GetMedCheckDOutData outData : this.observableDetailTableList) {
            if (outData.getDetailIndex().intValue() == indexList.get(0).intValue()) continue;
            GetMedCheckDOutData data = new GetMedCheckDOutData();
            BeanUtil.copyProperties(outData, data);
            data.setDetailIndex(index);
            dataList.add(data);
            ++index;
        }
        this.observableDetailTableList.clear();
        this.bingDetailTableCell();
        this.observableDetailTableList = FXCollections.observableArrayList(dataList);
        this.tableViewResultChoice(this.gsmcdResult);
        this.tableViewQtyText(this.gsmcdQty);
        this.detailTableView.setItems(this.observableDetailTableList);
    }

    @FXML
    private void deleteAllProduct() {
        this.observableDetailTableList.clear();
        this.bingDetailTableCell();
        this.detailTableView.setItems(this.observableDetailTableList);
    }

    private List<Integer> getDetailSelectIndex() {
        ArrayList<Integer> ids = new ArrayList<Integer>();
        if (!CollectionUtils.isEmpty(this.observableDetailTableList)) {
            for (GetMedCheckDOutData i : this.observableDetailTableList) {
                if (!i.getDetailCheckBox().isSelected().booleanValue()) continue;
                ids.add(i.getDetailIndex());
            }
        }
        return ids;
    }

    @FXML
    private void reset() {
        this.searchProId.clear();
        this.searchEmp.setValue(null);
        this.searchDate.setValue(null);
        this.searchBatchNo.clear();
        this.searchStatus.setValue(null);
        this.searchType.setValue(null);
    }

    public ScrollPane getScrollPane() {
        return this.scrollPane;
    }

    public VBox getVBox() {
        return this.vBox;
    }

    public HBox getDetailHbox() {
        return this.detailHbox;
    }

    public HBox getAddHbox() {
        return this.addHbox;
    }

    public TextField getSearchProId() {
        return this.searchProId;
    }

    public ChoiceBox<UserOutData> getSearchEmp() {
        return this.searchEmp;
    }

    public ChoiceBox<GetProductSortOutData> getProGroupSelect() {
        return this.proGroupSelect;
    }

    public ChoiceBox<GsmchValid> getValidSelect() {
        return this.validSelect;
    }

    public DatePicker getSearchDate() {
        return this.searchDate;
    }

    public TextField getSearchBatchNo() {
        return this.searchBatchNo;
    }

    public ChoiceBox<GsmchStatus> getSearchStatus() {
        return this.searchStatus;
    }

    public ChoiceBox<GsmchType> getSearchType() {
        return this.searchType;
    }

    public Button getSaveButton() {
        return this.saveButton;
    }

    public TableView<GetMedCheckOutData> getTableView() {
        return this.tableView;
    }

    public TableColumn<GetMedCheckOutData, Integer> getIndex() {
        return this.index;
    }

    public TableColumn<GetMedCheckOutData, CheckBox> getCheckBox() {
        return this.checkBox;
    }

    public TableColumn<GetMedCheckOutData, String> getGsmchVoucherId() {
        return this.gsmchVoucherId;
    }

    public TableColumn<GetMedCheckOutData, String> getGsmchBrName() {
        return this.gsmchBrName;
    }

    public TableColumn<GetMedCheckOutData, String> getGsmchDate() {
        return this.gsmchDate;
    }

    public TableColumn<GetMedCheckOutData, String> getGsmchType() {
        return this.gsmchType;
    }

    public TableColumn<GetMedCheckOutData, String> getGsmchEmp() {
        return this.gsmchEmp;
    }

    public TableColumn<GetMedCheckOutData, String> getGsmchExamineEmp() {
        return this.gsmchExamineEmp;
    }

    public TableColumn<GetMedCheckOutData, String> getGsmchStatus() {
        return this.gsmchStatus;
    }

    public TableView<GetMedCheckDOutData> getDetailTableView() {
        return this.detailTableView;
    }

    public TableColumn<GetMedCheckDOutData, CheckBox> getDetailCheckBox() {
        return this.detailCheckBox;
    }

    public TableColumn<GetMedCheckDOutData, Integer> getDetailIndex() {
        return this.detailIndex;
    }

    public TableColumn<GetMedCheckDOutData, String> getGsmcdProId() {
        return this.gsmcdProId;
    }

    public TableColumn<GetMedCheckDOutData, String> getProName() {
        return this.proName;
    }

    public TableColumn<GetMedCheckDOutData, String> getProSpecs() {
        return this.proSpecs;
    }

    public TableColumn<GetMedCheckDOutData, String> getProUnit() {
        return this.proUnit;
    }

    public TableColumn<GetMedCheckDOutData, String> getGsmcdBatchNo() {
        return this.gsmcdBatchNo;
    }

    public TableColumn<GetMedCheckDOutData, String> getVaild() {
        return this.vaild;
    }

    public TableColumn<GetMedCheckDOutData, String> getStockQty() {
        return this.stockQty;
    }

    public TableColumn<GetMedCheckDOutData, String> getGsmcdQty() {
        return this.gsmcdQty;
    }

    public TableColumn<GetMedCheckDOutData, String> getGsmcdResult() {
        return this.gsmcdResult;
    }

    public TableColumn<GetMedCheckDOutData, String> getProFactoryName() {
        return this.proFactoryName;
    }

    public TableColumn<GetMedCheckDOutData, String> getProPlace() {
        return this.proPlace;
    }

    public TableColumn<GetMedCheckDOutData, String> getProForm() {
        return this.proForm;
    }

    public ObservableList<GetMedCheckOutData> getObservableTableList() {
        return this.observableTableList;
    }

    public ObservableList<GetMedCheckDOutData> getObservableDetailTableList() {
        return this.observableDetailTableList;
    }

    public IndexController getIndexController() {
        return this.indexController;
    }

    public MedCheckProductController getMedCheckProductController() {
        return this.medCheckProductController;
    }

    public void setScrollPane(ScrollPane scrollPane) {
        this.scrollPane = scrollPane;
    }

    public void setVBox(VBox vBox) {
        this.vBox = vBox;
    }

    public void setDetailHbox(HBox detailHbox) {
        this.detailHbox = detailHbox;
    }

    public void setAddHbox(HBox addHbox) {
        this.addHbox = addHbox;
    }

    public void setSearchProId(TextField searchProId) {
        this.searchProId = searchProId;
    }

    public void setSearchEmp(ChoiceBox<UserOutData> searchEmp) {
        this.searchEmp = searchEmp;
    }

    public void setProGroupSelect(ChoiceBox<GetProductSortOutData> proGroupSelect) {
        this.proGroupSelect = proGroupSelect;
    }

    public void setValidSelect(ChoiceBox<GsmchValid> validSelect) {
        this.validSelect = validSelect;
    }

    public void setSearchDate(DatePicker searchDate) {
        this.searchDate = searchDate;
    }

    public void setSearchBatchNo(TextField searchBatchNo) {
        this.searchBatchNo = searchBatchNo;
    }

    public void setSearchStatus(ChoiceBox<GsmchStatus> searchStatus) {
        this.searchStatus = searchStatus;
    }

    public void setSearchType(ChoiceBox<GsmchType> searchType) {
        this.searchType = searchType;
    }

    public void setSaveButton(Button saveButton) {
        this.saveButton = saveButton;
    }

    public void setTableView(TableView<GetMedCheckOutData> tableView) {
        this.tableView = tableView;
    }

    public void setIndex(TableColumn<GetMedCheckOutData, Integer> index) {
        this.index = index;
    }

    public void setCheckBox(TableColumn<GetMedCheckOutData, CheckBox> checkBox) {
        this.checkBox = checkBox;
    }

    public void setGsmchVoucherId(TableColumn<GetMedCheckOutData, String> gsmchVoucherId) {
        this.gsmchVoucherId = gsmchVoucherId;
    }

    public void setGsmchBrName(TableColumn<GetMedCheckOutData, String> gsmchBrName) {
        this.gsmchBrName = gsmchBrName;
    }

    public void setGsmchDate(TableColumn<GetMedCheckOutData, String> gsmchDate) {
        this.gsmchDate = gsmchDate;
    }

    public void setGsmchType(TableColumn<GetMedCheckOutData, String> gsmchType) {
        this.gsmchType = gsmchType;
    }

    public void setGsmchEmp(TableColumn<GetMedCheckOutData, String> gsmchEmp) {
        this.gsmchEmp = gsmchEmp;
    }

    public void setGsmchExamineEmp(TableColumn<GetMedCheckOutData, String> gsmchExamineEmp) {
        this.gsmchExamineEmp = gsmchExamineEmp;
    }

    public void setGsmchStatus(TableColumn<GetMedCheckOutData, String> gsmchStatus) {
        this.gsmchStatus = gsmchStatus;
    }

    public void setDetailTableView(TableView<GetMedCheckDOutData> detailTableView) {
        this.detailTableView = detailTableView;
    }

    public void setDetailCheckBox(TableColumn<GetMedCheckDOutData, CheckBox> detailCheckBox) {
        this.detailCheckBox = detailCheckBox;
    }

    public void setDetailIndex(TableColumn<GetMedCheckDOutData, Integer> detailIndex) {
        this.detailIndex = detailIndex;
    }

    public void setGsmcdProId(TableColumn<GetMedCheckDOutData, String> gsmcdProId) {
        this.gsmcdProId = gsmcdProId;
    }

    public void setProName(TableColumn<GetMedCheckDOutData, String> proName) {
        this.proName = proName;
    }

    public void setProSpecs(TableColumn<GetMedCheckDOutData, String> proSpecs) {
        this.proSpecs = proSpecs;
    }

    public void setProUnit(TableColumn<GetMedCheckDOutData, String> proUnit) {
        this.proUnit = proUnit;
    }

    public void setGsmcdBatchNo(TableColumn<GetMedCheckDOutData, String> gsmcdBatchNo) {
        this.gsmcdBatchNo = gsmcdBatchNo;
    }

    public void setVaild(TableColumn<GetMedCheckDOutData, String> vaild) {
        this.vaild = vaild;
    }

    public void setStockQty(TableColumn<GetMedCheckDOutData, String> stockQty) {
        this.stockQty = stockQty;
    }

    public void setGsmcdQty(TableColumn<GetMedCheckDOutData, String> gsmcdQty) {
        this.gsmcdQty = gsmcdQty;
    }

    public void setGsmcdResult(TableColumn<GetMedCheckDOutData, String> gsmcdResult) {
        this.gsmcdResult = gsmcdResult;
    }

    public void setProFactoryName(TableColumn<GetMedCheckDOutData, String> proFactoryName) {
        this.proFactoryName = proFactoryName;
    }

    public void setProPlace(TableColumn<GetMedCheckDOutData, String> proPlace) {
        this.proPlace = proPlace;
    }

    public void setProForm(TableColumn<GetMedCheckDOutData, String> proForm) {
        this.proForm = proForm;
    }

    public void setObservableTableList(ObservableList<GetMedCheckOutData> observableTableList) {
        this.observableTableList = observableTableList;
    }

    public void setObservableDetailTableList(ObservableList<GetMedCheckDOutData> observableDetailTableList) {
        this.observableDetailTableList = observableDetailTableList;
    }

    public void setIndexController(IndexController indexController) {
        this.indexController = indexController;
    }

    public void setMedCheckProductController(MedCheckProductController medCheckProductController) {
        this.medCheckProductController = medCheckProductController;
    }

    public boolean equals(Object o) {
        if (o == this) {
            return true;
        }
        if (!(o instanceof MedCheckController)) {
            return false;
        }
        MedCheckController other = (MedCheckController)o;
        if (!other.canEqual(this)) {
            return false;
        }
        ScrollPane this$scrollPane = this.getScrollPane();
        ScrollPane other$scrollPane = other.getScrollPane();
        if (this$scrollPane == null ? other$scrollPane != null : !this$scrollPane.equals(other$scrollPane)) {
            return false;
        }
        VBox this$vBox = this.getVBox();
        VBox other$vBox = other.getVBox();
        if (this$vBox == null ? other$vBox != null : !this$vBox.equals(other$vBox)) {
            return false;
        }
        HBox this$detailHbox = this.getDetailHbox();
        HBox other$detailHbox = other.getDetailHbox();
        if (this$detailHbox == null ? other$detailHbox != null : !this$detailHbox.equals(other$detailHbox)) {
            return false;
        }
        HBox this$addHbox = this.getAddHbox();
        HBox other$addHbox = other.getAddHbox();
        if (this$addHbox == null ? other$addHbox != null : !this$addHbox.equals(other$addHbox)) {
            return false;
        }
        TextField this$searchProId = this.getSearchProId();
        TextField other$searchProId = other.getSearchProId();
        if (this$searchProId == null ? other$searchProId != null : !this$searchProId.equals(other$searchProId)) {
            return false;
        }
        ChoiceBox<UserOutData> this$searchEmp = this.getSearchEmp();
        ChoiceBox<UserOutData> other$searchEmp = other.getSearchEmp();
        if (this$searchEmp == null ? other$searchEmp != null : !this$searchEmp.equals(other$searchEmp)) {
            return false;
        }
        ChoiceBox<GetProductSortOutData> this$proGroupSelect = this.getProGroupSelect();
        ChoiceBox<GetProductSortOutData> other$proGroupSelect = other.getProGroupSelect();
        if (this$proGroupSelect == null ? other$proGroupSelect != null : !this$proGroupSelect.equals(other$proGroupSelect)) {
            return false;
        }
        ChoiceBox<GsmchValid> this$validSelect = this.getValidSelect();
        ChoiceBox<GsmchValid> other$validSelect = other.getValidSelect();
        if (this$validSelect == null ? other$validSelect != null : !this$validSelect.equals(other$validSelect)) {
            return false;
        }
        DatePicker this$searchDate = this.getSearchDate();
        DatePicker other$searchDate = other.getSearchDate();
        if (this$searchDate == null ? other$searchDate != null : !this$searchDate.equals(other$searchDate)) {
            return false;
        }
        TextField this$searchBatchNo = this.getSearchBatchNo();
        TextField other$searchBatchNo = other.getSearchBatchNo();
        if (this$searchBatchNo == null ? other$searchBatchNo != null : !this$searchBatchNo.equals(other$searchBatchNo)) {
            return false;
        }
        ChoiceBox<GsmchStatus> this$searchStatus = this.getSearchStatus();
        ChoiceBox<GsmchStatus> other$searchStatus = other.getSearchStatus();
        if (this$searchStatus == null ? other$searchStatus != null : !this$searchStatus.equals(other$searchStatus)) {
            return false;
        }
        ChoiceBox<GsmchType> this$searchType = this.getSearchType();
        ChoiceBox<GsmchType> other$searchType = other.getSearchType();
        if (this$searchType == null ? other$searchType != null : !this$searchType.equals(other$searchType)) {
            return false;
        }
        Button this$saveButton = this.getSaveButton();
        Button other$saveButton = other.getSaveButton();
        if (this$saveButton == null ? other$saveButton != null : !this$saveButton.equals(other$saveButton)) {
            return false;
        }
        TableView<GetMedCheckOutData> this$tableView = this.getTableView();
        TableView<GetMedCheckOutData> other$tableView = other.getTableView();
        if (this$tableView == null ? other$tableView != null : !this$tableView.equals(other$tableView)) {
            return false;
        }
        TableColumn<GetMedCheckOutData, Integer> this$index = this.getIndex();
        TableColumn<GetMedCheckOutData, Integer> other$index = other.getIndex();
        if (this$index == null ? other$index != null : !this$index.equals(other$index)) {
            return false;
        }
        TableColumn<GetMedCheckOutData, CheckBox> this$checkBox = this.getCheckBox();
        TableColumn<GetMedCheckOutData, CheckBox> other$checkBox = other.getCheckBox();
        if (this$checkBox == null ? other$checkBox != null : !this$checkBox.equals(other$checkBox)) {
            return false;
        }
        TableColumn<GetMedCheckOutData, String> this$gsmchVoucherId = this.getGsmchVoucherId();
        TableColumn<GetMedCheckOutData, String> other$gsmchVoucherId = other.getGsmchVoucherId();
        if (this$gsmchVoucherId == null ? other$gsmchVoucherId != null : !this$gsmchVoucherId.equals(other$gsmchVoucherId)) {
            return false;
        }
        TableColumn<GetMedCheckOutData, String> this$gsmchBrName = this.getGsmchBrName();
        TableColumn<GetMedCheckOutData, String> other$gsmchBrName = other.getGsmchBrName();
        if (this$gsmchBrName == null ? other$gsmchBrName != null : !this$gsmchBrName.equals(other$gsmchBrName)) {
            return false;
        }
        TableColumn<GetMedCheckOutData, String> this$gsmchDate = this.getGsmchDate();
        TableColumn<GetMedCheckOutData, String> other$gsmchDate = other.getGsmchDate();
        if (this$gsmchDate == null ? other$gsmchDate != null : !this$gsmchDate.equals(other$gsmchDate)) {
            return false;
        }
        TableColumn<GetMedCheckOutData, String> this$gsmchType = this.getGsmchType();
        TableColumn<GetMedCheckOutData, String> other$gsmchType = other.getGsmchType();
        if (this$gsmchType == null ? other$gsmchType != null : !this$gsmchType.equals(other$gsmchType)) {
            return false;
        }
        TableColumn<GetMedCheckOutData, String> this$gsmchEmp = this.getGsmchEmp();
        TableColumn<GetMedCheckOutData, String> other$gsmchEmp = other.getGsmchEmp();
        if (this$gsmchEmp == null ? other$gsmchEmp != null : !this$gsmchEmp.equals(other$gsmchEmp)) {
            return false;
        }
        TableColumn<GetMedCheckOutData, String> this$gsmchExamineEmp = this.getGsmchExamineEmp();
        TableColumn<GetMedCheckOutData, String> other$gsmchExamineEmp = other.getGsmchExamineEmp();
        if (this$gsmchExamineEmp == null ? other$gsmchExamineEmp != null : !this$gsmchExamineEmp.equals(other$gsmchExamineEmp)) {
            return false;
        }
        TableColumn<GetMedCheckOutData, String> this$gsmchStatus = this.getGsmchStatus();
        TableColumn<GetMedCheckOutData, String> other$gsmchStatus = other.getGsmchStatus();
        if (this$gsmchStatus == null ? other$gsmchStatus != null : !this$gsmchStatus.equals(other$gsmchStatus)) {
            return false;
        }
        TableView<GetMedCheckDOutData> this$detailTableView = this.getDetailTableView();
        TableView<GetMedCheckDOutData> other$detailTableView = other.getDetailTableView();
        if (this$detailTableView == null ? other$detailTableView != null : !this$detailTableView.equals(other$detailTableView)) {
            return false;
        }
        TableColumn<GetMedCheckDOutData, CheckBox> this$detailCheckBox = this.getDetailCheckBox();
        TableColumn<GetMedCheckDOutData, CheckBox> other$detailCheckBox = other.getDetailCheckBox();
        if (this$detailCheckBox == null ? other$detailCheckBox != null : !this$detailCheckBox.equals(other$detailCheckBox)) {
            return false;
        }
        TableColumn<GetMedCheckDOutData, Integer> this$detailIndex = this.getDetailIndex();
        TableColumn<GetMedCheckDOutData, Integer> other$detailIndex = other.getDetailIndex();
        if (this$detailIndex == null ? other$detailIndex != null : !this$detailIndex.equals(other$detailIndex)) {
            return false;
        }
        TableColumn<GetMedCheckDOutData, String> this$gsmcdProId = this.getGsmcdProId();
        TableColumn<GetMedCheckDOutData, String> other$gsmcdProId = other.getGsmcdProId();
        if (this$gsmcdProId == null ? other$gsmcdProId != null : !this$gsmcdProId.equals(other$gsmcdProId)) {
            return false;
        }
        TableColumn<GetMedCheckDOutData, String> this$proName = this.getProName();
        TableColumn<GetMedCheckDOutData, String> other$proName = other.getProName();
        if (this$proName == null ? other$proName != null : !this$proName.equals(other$proName)) {
            return false;
        }
        TableColumn<GetMedCheckDOutData, String> this$proSpecs = this.getProSpecs();
        TableColumn<GetMedCheckDOutData, String> other$proSpecs = other.getProSpecs();
        if (this$proSpecs == null ? other$proSpecs != null : !this$proSpecs.equals(other$proSpecs)) {
            return false;
        }
        TableColumn<GetMedCheckDOutData, String> this$proUnit = this.getProUnit();
        TableColumn<GetMedCheckDOutData, String> other$proUnit = other.getProUnit();
        if (this$proUnit == null ? other$proUnit != null : !this$proUnit.equals(other$proUnit)) {
            return false;
        }
        TableColumn<GetMedCheckDOutData, String> this$gsmcdBatchNo = this.getGsmcdBatchNo();
        TableColumn<GetMedCheckDOutData, String> other$gsmcdBatchNo = other.getGsmcdBatchNo();
        if (this$gsmcdBatchNo == null ? other$gsmcdBatchNo != null : !this$gsmcdBatchNo.equals(other$gsmcdBatchNo)) {
            return false;
        }
        TableColumn<GetMedCheckDOutData, String> this$vaild = this.getVaild();
        TableColumn<GetMedCheckDOutData, String> other$vaild = other.getVaild();
        if (this$vaild == null ? other$vaild != null : !this$vaild.equals(other$vaild)) {
            return false;
        }
        TableColumn<GetMedCheckDOutData, String> this$stockQty = this.getStockQty();
        TableColumn<GetMedCheckDOutData, String> other$stockQty = other.getStockQty();
        if (this$stockQty == null ? other$stockQty != null : !this$stockQty.equals(other$stockQty)) {
            return false;
        }
        TableColumn<GetMedCheckDOutData, String> this$gsmcdQty = this.getGsmcdQty();
        TableColumn<GetMedCheckDOutData, String> other$gsmcdQty = other.getGsmcdQty();
        if (this$gsmcdQty == null ? other$gsmcdQty != null : !this$gsmcdQty.equals(other$gsmcdQty)) {
            return false;
        }
        TableColumn<GetMedCheckDOutData, String> this$gsmcdResult = this.getGsmcdResult();
        TableColumn<GetMedCheckDOutData, String> other$gsmcdResult = other.getGsmcdResult();
        if (this$gsmcdResult == null ? other$gsmcdResult != null : !this$gsmcdResult.equals(other$gsmcdResult)) {
            return false;
        }
        TableColumn<GetMedCheckDOutData, String> this$proFactoryName = this.getProFactoryName();
        TableColumn<GetMedCheckDOutData, String> other$proFactoryName = other.getProFactoryName();
        if (this$proFactoryName == null ? other$proFactoryName != null : !this$proFactoryName.equals(other$proFactoryName)) {
            return false;
        }
        TableColumn<GetMedCheckDOutData, String> this$proPlace = this.getProPlace();
        TableColumn<GetMedCheckDOutData, String> other$proPlace = other.getProPlace();
        if (this$proPlace == null ? other$proPlace != null : !this$proPlace.equals(other$proPlace)) {
            return false;
        }
        TableColumn<GetMedCheckDOutData, String> this$proForm = this.getProForm();
        TableColumn<GetMedCheckDOutData, String> other$proForm = other.getProForm();
        if (this$proForm == null ? other$proForm != null : !this$proForm.equals(other$proForm)) {
            return false;
        }
        ObservableList<GetMedCheckOutData> this$observableTableList = this.getObservableTableList();
        ObservableList<GetMedCheckOutData> other$observableTableList = other.getObservableTableList();
        if (this$observableTableList == null ? other$observableTableList != null : !this$observableTableList.equals(other$observableTableList)) {
            return false;
        }
        ObservableList<GetMedCheckDOutData> this$observableDetailTableList = this.getObservableDetailTableList();
        ObservableList<GetMedCheckDOutData> other$observableDetailTableList = other.getObservableDetailTableList();
        if (this$observableDetailTableList == null ? other$observableDetailTableList != null : !this$observableDetailTableList.equals(other$observableDetailTableList)) {
            return false;
        }
        IndexController this$indexController = this.getIndexController();
        IndexController other$indexController = other.getIndexController();
        if (this$indexController == null ? other$indexController != null : !(this$indexController).equals(other$indexController)) {
            return false;
        }
        MedCheckProductController this$medCheckProductController = this.getMedCheckProductController();
        MedCheckProductController other$medCheckProductController = other.getMedCheckProductController();
        return !(this$medCheckProductController == null ? other$medCheckProductController != null : !this$medCheckProductController.equals(other$medCheckProductController));
    }

    protected boolean canEqual(Object other) {
        return other instanceof MedCheckController;
    }

    public int hashCode() {
        int PRIME = 59;
        int result = 1;
        ScrollPane $scrollPane = this.getScrollPane();
        result = result * 59 + ($scrollPane == null ? 43 : $scrollPane.hashCode());
        VBox $vBox = this.getVBox();
        result = result * 59 + ($vBox == null ? 43 : $vBox.hashCode());
        HBox $detailHbox = this.getDetailHbox();
        result = result * 59 + ($detailHbox == null ? 43 : $detailHbox.hashCode());
        HBox $addHbox = this.getAddHbox();
        result = result * 59 + ($addHbox == null ? 43 : $addHbox.hashCode());
        TextField $searchProId = this.getSearchProId();
        result = result * 59 + ($searchProId == null ? 43 : $searchProId.hashCode());
        ChoiceBox<UserOutData> $searchEmp = this.getSearchEmp();
        result = result * 59 + ($searchEmp == null ? 43 : $searchEmp.hashCode());
        ChoiceBox<GetProductSortOutData> $proGroupSelect = this.getProGroupSelect();
        result = result * 59 + ($proGroupSelect == null ? 43 : $proGroupSelect.hashCode());
        ChoiceBox<GsmchValid> $validSelect = this.getValidSelect();
        result = result * 59 + ($validSelect == null ? 43 : $validSelect.hashCode());
        DatePicker $searchDate = this.getSearchDate();
        result = result * 59 + ($searchDate == null ? 43 : $searchDate.hashCode());
        TextField $searchBatchNo = this.getSearchBatchNo();
        result = result * 59 + ($searchBatchNo == null ? 43 : $searchBatchNo.hashCode());
        ChoiceBox<GsmchStatus> $searchStatus = this.getSearchStatus();
        result = result * 59 + ($searchStatus == null ? 43 : $searchStatus.hashCode());
        ChoiceBox<GsmchType> $searchType = this.getSearchType();
        result = result * 59 + ($searchType == null ? 43 : $searchType.hashCode());
        Button $saveButton = this.getSaveButton();
        result = result * 59 + ($saveButton == null ? 43 : $saveButton.hashCode());
        TableView<GetMedCheckOutData> $tableView = this.getTableView();
        result = result * 59 + ($tableView == null ? 43 : $tableView.hashCode());
        TableColumn<GetMedCheckOutData, Integer> $index = this.getIndex();
        result = result * 59 + ($index == null ? 43 : $index.hashCode());
        TableColumn<GetMedCheckOutData, CheckBox> $checkBox = this.getCheckBox();
        result = result * 59 + ($checkBox == null ? 43 : $checkBox.hashCode());
        TableColumn<GetMedCheckOutData, String> $gsmchVoucherId = this.getGsmchVoucherId();
        result = result * 59 + ($gsmchVoucherId == null ? 43 : $gsmchVoucherId.hashCode());
        TableColumn<GetMedCheckOutData, String> $gsmchBrName = this.getGsmchBrName();
        result = result * 59 + ($gsmchBrName == null ? 43 : $gsmchBrName.hashCode());
        TableColumn<GetMedCheckOutData, String> $gsmchDate = this.getGsmchDate();
        result = result * 59 + ($gsmchDate == null ? 43 : $gsmchDate.hashCode());
        TableColumn<GetMedCheckOutData, String> $gsmchType = this.getGsmchType();
        result = result * 59 + ($gsmchType == null ? 43 : $gsmchType.hashCode());
        TableColumn<GetMedCheckOutData, String> $gsmchEmp = this.getGsmchEmp();
        result = result * 59 + ($gsmchEmp == null ? 43 : $gsmchEmp.hashCode());
        TableColumn<GetMedCheckOutData, String> $gsmchExamineEmp = this.getGsmchExamineEmp();
        result = result * 59 + ($gsmchExamineEmp == null ? 43 : $gsmchExamineEmp.hashCode());
        TableColumn<GetMedCheckOutData, String> $gsmchStatus = this.getGsmchStatus();
        result = result * 59 + ($gsmchStatus == null ? 43 : $gsmchStatus.hashCode());
        TableView<GetMedCheckDOutData> $detailTableView = this.getDetailTableView();
        result = result * 59 + ($detailTableView == null ? 43 : $detailTableView.hashCode());
        TableColumn<GetMedCheckDOutData, CheckBox> $detailCheckBox = this.getDetailCheckBox();
        result = result * 59 + ($detailCheckBox == null ? 43 : $detailCheckBox.hashCode());
        TableColumn<GetMedCheckDOutData, Integer> $detailIndex = this.getDetailIndex();
        result = result * 59 + ($detailIndex == null ? 43 : $detailIndex.hashCode());
        TableColumn<GetMedCheckDOutData, String> $gsmcdProId = this.getGsmcdProId();
        result = result * 59 + ($gsmcdProId == null ? 43 : $gsmcdProId.hashCode());
        TableColumn<GetMedCheckDOutData, String> $proName = this.getProName();
        result = result * 59 + ($proName == null ? 43 : $proName.hashCode());
        TableColumn<GetMedCheckDOutData, String> $proSpecs = this.getProSpecs();
        result = result * 59 + ($proSpecs == null ? 43 : $proSpecs.hashCode());
        TableColumn<GetMedCheckDOutData, String> $proUnit = this.getProUnit();
        result = result * 59 + ($proUnit == null ? 43 : $proUnit.hashCode());
        TableColumn<GetMedCheckDOutData, String> $gsmcdBatchNo = this.getGsmcdBatchNo();
        result = result * 59 + ($gsmcdBatchNo == null ? 43 : $gsmcdBatchNo.hashCode());
        TableColumn<GetMedCheckDOutData, String> $vaild = this.getVaild();
        result = result * 59 + ($vaild == null ? 43 : $vaild.hashCode());
        TableColumn<GetMedCheckDOutData, String> $stockQty = this.getStockQty();
        result = result * 59 + ($stockQty == null ? 43 : $stockQty.hashCode());
        TableColumn<GetMedCheckDOutData, String> $gsmcdQty = this.getGsmcdQty();
        result = result * 59 + ($gsmcdQty == null ? 43 : $gsmcdQty.hashCode());
        TableColumn<GetMedCheckDOutData, String> $gsmcdResult = this.getGsmcdResult();
        result = result * 59 + ($gsmcdResult == null ? 43 : $gsmcdResult.hashCode());
        TableColumn<GetMedCheckDOutData, String> $proFactoryName = this.getProFactoryName();
        result = result * 59 + ($proFactoryName == null ? 43 : $proFactoryName.hashCode());
        TableColumn<GetMedCheckDOutData, String> $proPlace = this.getProPlace();
        result = result * 59 + ($proPlace == null ? 43 : $proPlace.hashCode());
        TableColumn<GetMedCheckDOutData, String> $proForm = this.getProForm();
        result = result * 59 + ($proForm == null ? 43 : $proForm.hashCode());
        ObservableList<GetMedCheckOutData> $observableTableList = this.getObservableTableList();
        result = result * 59 + ($observableTableList == null ? 43 : $observableTableList.hashCode());
        ObservableList<GetMedCheckDOutData> $observableDetailTableList = this.getObservableDetailTableList();
        result = result * 59 + ($observableDetailTableList == null ? 43 : $observableDetailTableList.hashCode());
        IndexController $indexController = this.getIndexController();
        result = result * 59 + ($indexController == null ? 43 : ($indexController).hashCode());
        MedCheckProductController $medCheckProductController = this.getMedCheckProductController();
        result = result * 59 + ($medCheckProductController == null ? 43 : $medCheckProductController.hashCode());
        return result;
    }

    public String toString() {
        return "MedCheckController(scrollPane=" + this.getScrollPane() + ", vBox=" + this.getVBox() + ", detailHbox=" + this.getDetailHbox() + ", addHbox=" + this.getAddHbox() + ", searchProId=" + this.getSearchProId() + ", searchEmp=" + this.getSearchEmp() + ", proGroupSelect=" + this.getProGroupSelect() + ", validSelect=" + this.getValidSelect() + ", searchDate=" + this.getSearchDate() + ", searchBatchNo=" + this.getSearchBatchNo() + ", searchStatus=" + this.getSearchStatus() + ", searchType=" + this.getSearchType() + ", saveButton=" + this.getSaveButton() + ", tableView=" + this.getTableView() + ", index=" + this.getIndex() + ", checkBox=" + this.getCheckBox() + ", gsmchVoucherId=" + this.getGsmchVoucherId() + ", gsmchBrName=" + this.getGsmchBrName() + ", gsmchDate=" + this.getGsmchDate() + ", gsmchType=" + this.getGsmchType() + ", gsmchEmp=" + this.getGsmchEmp() + ", gsmchExamineEmp=" + this.getGsmchExamineEmp() + ", gsmchStatus=" + this.getGsmchStatus() + ", detailTableView=" + this.getDetailTableView() + ", detailCheckBox=" + this.getDetailCheckBox() + ", detailIndex=" + this.getDetailIndex() + ", gsmcdProId=" + this.getGsmcdProId() + ", proName=" + this.getProName() + ", proSpecs=" + this.getProSpecs() + ", proUnit=" + this.getProUnit() + ", gsmcdBatchNo=" + this.getGsmcdBatchNo() + ", vaild=" + this.getVaild() + ", stockQty=" + this.getStockQty() + ", gsmcdQty=" + this.getGsmcdQty() + ", gsmcdResult=" + this.getGsmcdResult() + ", proFactoryName=" + this.getProFactoryName() + ", proPlace=" + this.getProPlace() + ", proForm=" + this.getProForm() + ", observableTableList=" + this.getObservableTableList() + ", observableDetailTableList=" + this.getObservableDetailTableList() + ", indexController=" + this.getIndexController() + ", medCheckProductController=" + this.getMedCheckProductController() + ")";
    }

}

